# @Time : 2025-03-26 17:53
# @Author : Fioman 
# @Phone : 13149920693
"""
坐标系以「左上角」为原点，向右为x轴正方向，向下为y轴正方向
当QWidget为窗口时，设置/获取其相对桌面的位置（包含其框架,这里的框架就是边框和标题栏,为什么这么去说呢?
这是因为每一个窗口都有一个框架,是窗口的边框和标题栏的部分,不属于窗口的内容区域.当我们获取QWidget的
位置的时候,如果不是作为窗口的时候,只是去获取其内容区域的位置,不包括框架）
当QWidget为子控件时，设置/获取其相对父控件的位置
"""
import sys

from PySide6 import QtWidgets


class MyMainWindow(QtWidgets.QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("QWidget位置")  # 设置窗口标题
        self.resize(500, 500)  # 设置窗口大小
        self.setup_ui()

    def setup_ui(self):
        """
        测试
        :return:
        """
        self.test_01()

    def test_01(self):
        """
        测试设置位置功能
        :return:
        """
        self.move(200, 200)  # 相对于左上角向右和向下移动200像素
        self.label = QtWidgets.QLabel("Hello World", self)
        self.label.move(100, 200)  # 相对于父控件向右和向下移动100像素
        self.print_widget_size()  # 这里打印出来是一样的,以为窗口还没有显示出来,还获取不到正确的尺寸,
        # 可以同时设置其位置和尺寸,计算像素时不包含框架
        self.setGeometry(200, 200, 200, 200)

    def print_widget_size(self):
        """
        打印窗口的尺寸大小
        :return:
        """
        print("用户区域的尺寸大小:", self.size())  # 用户区域
        print("窗口整体尺寸大小:", self.frameGeometry().size())  # 窗口大小(包含标题栏)


if __name__ == '__main__':
    app = QtWidgets.QApplication([])
    window = MyMainWindow()
    window.show()
    window.print_widget_size()
    sys.exit(app.exec())
